package main

import "fmt"

// 实现error接口
//  标准error数据类型本质上是一个接口，原型如下

// package builtin
// type error interface {
// 	Error() string
// }

type divideError struct {
	msg string
}

func (d *divideError) Error() string {
	return d.msg
}

func newDivideError() *divideError {
	return &divideError{
		msg: "divide by zero",
	}
}

func myDivide(dividend, divisor float64) (float64, error) {
	if divisor == 0 {
		return 0, newDivideError()
	}
	return dividend / divisor, nil
}

func main() {
	divide, err := myDivide(100, 0)
	if err != nil {
		fmt.Printf("Error: %s\n", err)
	} else {
		fmt.Printf("Result: %f\n", divide)
	}
}
